import React, { Component } from 'react'
import store from './store'
import { increment, decrement,incrementAsync } from './action'

export default class Counter extends Component {
    // state = {
    //     count: 0
    // }
    // render() {
    //     return (
    //         <div style={{ marginLeft: '30px' }}>
    //             <h1>当前求和为：{this.state.count}</h1>
    //             <select ref={c => this.selectNumber = c}>
    //                 <option value="1">1</option>
    //                 <option value="2">2</option>
    //                 <option value="3">3</option>
    //             </select>&nbsp;
    //             <button onClick={this.increment}>+</button>&nbsp;
    //             <button onClick={this.decrement}>-</button>&nbsp;
    //             <button onClick={this.incrementIfOdd}>odd +</button>&nbsp;
    //             <button onClick={this.incrementAsync}>asnyc +</button>&nbsp;
    //         </div>
    //     )
    // }
    // increment = () => {
    //     const {value} = this.selectNumber
    //     const {count} = this.state
    //     this.setState({count:count + value * 1})
    // }
    // decrement = () => {
    //     const {value} = this.selectNumber
    //     const {count} = this.state
    //     this.setState({count:count - value * 1})
    // }
    // incrementIfOdd = () => {
    //     const {value} = this.selectNumber
    //     const {count} = this.state
    //     if(count % 2 === 0){
    //         return
    //     }
    //     this.setState({count:count + value * 1})
    // }
    // incrementAsync = () => {
    //     const {value} = this.selectNumber
    //     const {count} = this.state
    //     setTimeout(()=>{
    //         this.setState({count:count + value * 1})
    //     },500)
    // }


    render() {
        return (
            <div style={{ marginLeft: '30px' }}>
                <h1>当前求和为：{store.getState()}</h1>
                <select ref={c => this.selectNumber = c}>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>&nbsp;
                <button onClick={this.increment}>+</button>&nbsp;
                <button onClick={this.decrement}>-</button>&nbsp;
                <button onClick={this.incrementIfOdd}>odd +</button>&nbsp;
                <button onClick={this.incrementAsync}>asnyc +</button>&nbsp;
            </div>
        )
    }
    // componentDidMount(){
    //     // 状态改变就回调
    //     store.subscribe((data)=>{
    //         // 重新 render，render 调用 getState
    //         this.setState({})
    //     })
    // }
    increment = () => {
        const { value } = this.selectNumber
        store.dispatch(increment(value*1))
    }
    decrement = () => {
        const { value } = this.selectNumber
        store.dispatch(decrement(value*1))
    }
    incrementIfOdd = () => {
        const { value } = this.selectNumber
        if (store.getState() % 2 === 0) {
            return
        }
        store.dispatch(increment(value*1))
    }
    incrementAsync = () => {
        const { value } = this.selectNumber
        store.dispatch(incrementAsync(value*1,500))
    }
}
